home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Wonky Flux Batch 2019 02
/
Wonky_Flux_Batch_2019-02.zip
/
Wonky Flux Batch 2019-02
/
002 - AE ProDOS Time Utilities - Timemaster II H.O Version 3.5 Apple Pascal.dsk
/
TIME2.TEXT.txt
< prev
Wrap
Text File
|
2019-02-16
|
4KB
|
230 lines
(*$S+*)
(* WRITTEN BY STEVEN MALECHEK FOR APPLIED ENGINEERING ON JAN 12, 1984. *)
(* Copyright (C) 1984, 1986 by Applied Engineering *)
UNIT TIMEMASTERII; INTRINSIC CODE 26 DATA 27;
INTERFACE
VAR
TIME : STRING[13];
TODAY : STRING[18];
PROCEDURE GETCLOCK;
FUNCTION CLDAY : INTEGER;
FUNCTION CLMONTH : INTEGER;
FUNCTION CLDATE : INTEGER;
FUNCTION CLYEAR : INTEGER;
FUNCTION CLHOURS : INTEGER;
FUNCTION CLMINUTES: INTEGER;
FUNCTION CLSECONDS: INTEGER;
IMPLEMENTATION
TYPE
BYTE = PACKED ARRAY [0..1] OF 0..255;
DIRTY= RECORD
CASE BOOLEAN OF
TRUE : (INT: INTEGER);
FALSE: (PTR: ^BYTE)
END;
VAR
SLOT : INTEGER;
X : INTEGER;
FUNCTION READCLOCK(SELECT:INTEGER):INTEGER;
EXTERNAL;
FUNCTION CLDAY;
BEGIN
CLDAY:=READCLOCK(0)
END;
FUNCTION CLMONTH;
BEGIN
CLMONTH:=READCLOCK(1)
END;
FUNCTION CLDATE;
BEGIN
CLDATE:=READCLOCK(3)
END;
FUNCTION CLYEAR;
BEGIN
CLYEAR:=READCLOCK(5)
END;
FUNCTION CLHOURS;
BEGIN
CLHOURS:=READCLOCK(7)
END;
FUNCTION CLMINUTES;
BEGIN
CLMINUTES:=READCLOCK(9)
END;
FUNCTION CLSECONDS;
BEGIN
CLSECONDS:=READCLOCK(11)
END;
PROCEDURE GETCLOCK;
VAR
THISDAY,THISMONTH:STRING[3];
DT,YR:STRING[2];
H,M,S,PART:STRING[2];
HR:INTEGER;
BEGIN
CASE CLDAY OF
0:THISDAY:='SUN';
1:THISDAY:='MON';
2:THISDAY:='TUE';
3:THISDAY:='WED';
4:THISDAY:='THU';
5:THISDAY:='FRI';
6:THISDAY:='SAT'
END;
CASE CLMONTH OF
1:THISMONTH:='JAN';
2:THISMONTH:='FEB';
3:THISMONTH:='MAR';
4:THISMONTH:='APR';
5:THISMONTH:='MAY';
6:THISMONTH:='JUN';
7:THISMONTH:='JUL';
8:THISMONTH:='AUG';
9:THISMONTH:='SEP';
10:THISMONTH:='OCT';
11:THISMONTH:='NOV';
12:THISMONTH:='DEC';
END;
STR(CLDATE,DT);
STR(CLYEAR,YR);
IF LENGTH(YR) = 1 THEN
YR:=CONCAT('0',YR);
TODAY:=CONCAT(' ',THISDAY,' ',THISMONTH,' ',DT,', 19',YR,' ');
HR:=CLHOURS;
IF HR < 12 THEN
PART:='AM'
ELSE
PART:='PM';
IF HR <= 12 THEN
IF HR = 0 THEN
BEGIN
HR:=12;
STR(HR,H)
END
ELSE
STR(HR,H)
ELSE
STR(HR-12,H);
STR(CLMINUTES,M);
IF LENGTH(M) = 1 THEN
M:=CONCAT('0',M);
STR(CLSECONDS,S);
IF LENGTH(S) = 1 THEN
S:=CONCAT('0',S);
TIME:=CONCAT(' ',H,':',M,':',S,' ',PART,' ')
END;
FUNCTION PEEK(ADDR:INTEGER):INTEGER;
VAR
TRICK : DIRTY;
BEGIN
TRICK.INT:=ADDR;
PEEK:=TRICK.PTR^[0]
END;
BEGIN (* MAIN *)
(* THIS PART IS THE INITIALIZATION PART
OF THE UNIT. IT SEARCHES ALL OF THE
SLOTS FOR THE PRESENCE OF THE
TIMEMASTER II CLOCK. WHEN THE CLOCK
IS FOUND THE SLOT INFORMATION IS
PASSED TO THE ASSEMBLY ROUTINE. IF
THE CLOCK IS NOT IN THE COMPUTER
THEN THE CALLING PROGRAM WILL BE
TERMINATED. *)
X:=PEEK(-12289); (* CFFF STROBE *)
SLOT:=0;
FOR X:=1 TO 7 DO
IF ((PEEK(-16350+X*256) = 248) AND (PEEK(-16348+X*256) = 104))
OR ((PEEK(-16384+X*256) = 8) AND (PEEK(-16383+X*256) = 120)
AND (PEEK(-16130+X*256) = 178))
THEN SLOT:=X*16;
X:=PEEK(-12289);
IF SLOT = 0 THEN
BEGIN
PAGE(OUTPUT);
WRITELN('THE TIMEMASTER CLOCK IS NOT IN THE COMPUTER');
EXIT(PROGRAM)
END;
GETCLOCK; (* PRESET TIME AND TODAY STRINGS *)
END.